<?php
	include_once '../../include/inc_session.php';	
	
	$oTypepers 	= new dataObject_personne();
	
	/**
	 * Construction du formulaire TYPE MORAL
	 */
	 
	//RECUPERATION DU TYPE DE PERSONNE SELON L'INTERVENANT CHOISI.
	$sTypeValue = '';
	$sCivilite  = '';
	$sSexe      = '';
	$sEtat      = '';
	$sTypeAssure= '';
	$sTypeRole	= '';
	
	if(isset($_GET['Identifiant_personne']))
	{
		$_SESSION['IdPers'] = $_GET['Identifiant_personne'];
		$oTypepers 	= new dataObject_personne($_GET['Identifiant_personne']);
		$sTypeValue = $oTypepers->_TYPE_PERSONNE;
		$sCivilite  = $oTypepers->_CIVILITE_PERSONNE;
		$sSexe      = $oTypepers->_SEXE_PERSONNE;
		$sEtat      = $oTypepers->_ETAT_PERSONNE;
		//var_dump(1);
	}
	if(isset($_GET['idrole']) || (isset($_SESSION['idRolePers']) && !empty($_SESSION['idRolePers'])))
	{
		$idRol = isset($_GET['idrole']) ? $_GET['idrole'] : $_SESSION['idRolePers'];
		$oPers 	= new dataObject_personne();
		$aInfos = $oPers->personne_getInfosFromRole($idRol);
		$sTypeAssure = $aInfos['Type_assure'];
		$sTypeRole	= $aInfos['Type_role'];
		$_SESSION['TR'] = $sTypeRole;
	}
	
	// construction de l’objet Template
	if($sTypeValue=='P') $oPageEdit = new Template(PATH_TEMPLATE.'tpl_edit_modcont.html');
	else $oPageEdit = new Template(PATH_TEMPLATE.'tpl_edit_modcont_mor.html');
		
	//remplacement simple
	$oPageEdit->replace('nom_module', "Production");
	$oPageEdit->replace('nom_fonction', "Modification contractuelle");
	$oPageEdit->replace('nom_element',"Détail Intervenant");
	
	if(isset($_POST['valider']))
	{
		$oTypepers = new dataObject_personne($_SESSION['IdPers']);
		$sTypeValue = $_POST['FS_Type_personne'];//var_dump($sTypeValue);
		$sCivilite  = $_POST['FS_Civilite'];//var_dump($sCivilite);
		$sSexe      = $_POST['FS_Sexe'];//var_dump($sSexe);
		$sTypeAssure= $_POST['FS_Type_dassure'];
		$sTypeRole	= $_POST['FS_Type_role'];

	}
	$sNumContrat = isset($_SESSION['modcontrac']) ? $_SESSION['modcontrac'] : $_GET['idc'];
	
	//RÉCUPÉRATION DE L'IDENTIFIANT DU CONTRAT DE LA DATE D'EFFET
	$oContrat = new dataObject_contrat();
	$nIdcontrat = $oContrat->contrat_getIdFromNumContrat($sNumContrat);
	$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
	
	//RECHERCHE SUR LES CONDITIONS DE VENTE DE TYPE JUSTIFICATIF LIEES À CERTAINS CRITÈRES.
	$oCondtVente = new dataObject_conditionVente();
	$ncdtv = $oCondtVente->get_conditionVenteJustContrat($nIdcontrat,$dDateEffet);
	
	if($ncdtv>0) $_SESSION['justificatif'] = true;
	else unset($_SESSION['justificatif']);
	
	//RECHERCHE SI LE PRODUIT LIÉ AU CONTRAT À DES GARANTIES OPTIONNELLES; ON RETOURNE L'IDENTIFIANT DU PRODUIT.
	$oProduit = new dataObject_produit();
	//$nIdProdGarn = $oProduit->getProduitGarantieOptionnelle($nIdcontrat);
	
	
	//RECHERCHE DES CONDITIONS DE VENTE DE TYPE LIMITE APPLICABLES À LA DATE D'EFFET DU CONTRAT EN COURS POUR L'OFFRE ET LE PRODUIT LIÉS.
	$oCondtVenteLim = new dataObject_conditionVente();
	$aCdtvLim = $oCondtVenteLim->get_condVenteLimOffProdContrat($nIdcontrat,$dDateEffet);
	
	//ON CALCULE L'AGE DE LA PERSONNE
	$oPersonne = new dataObject_personne($_SESSION['IdPers']);
	if(!isset($_POST['valider']))
	{
		$nAge = $oPersonne->personne_getAge($oPersonne->_DATE_NAISSANCE_PERSONNE);
	}
	else
	{
		$nAge = $oPersonne->personne_getAge($_POST['ODN_Date_naissance']);
	}
	
	
	/**
	 * Si parmi les conditions de vente, 
	 * il existe une condition de vente de code AGMIA ou AGMIE (âge minimum adulte ou enfant) 
	 * ou AGMAA ou AGMAE (âge maximum adulte ou enfant), contrôler la date de naissance.
	 * Valeur_condition_vente
	 */
	if(isset($_POST['valider']))
	{
		if(($aCdtvLim != null) && ($sTypeValue=="P"))
		{
			foreach ($aCdtvLim as $iKey => $aelmt)
			{
				if( $sTypeAssure== dataObject_elementdico::TYP_ASSURE_ENFANT)
				{//tests pour le type assuré enfant
					
					if( ($aelmt['Code_condition_vente']=="AGMIE") && ($nAge < $aelmt['Valeur_condition_vente']) )
					{
						$oForm->ajouterErreur(condition_vente_personne_jeune);
						$gbFormValid = false;
					}
					
					if( ($aelmt['Code_condition_vente']=="AGMAE") && ($nAge > $aelmt['Valeur_condition_vente']) ){
						$oForm->ajouterErreur(condition_vente_personne_agee);
						$gbFormValid = false;
					}
					
				}
				else
				{ //si type assuré adulte (différent de enfant)	
					
					if( ($aelmt['Code_condition_vente']=="AGMIA") && ($nAge < $aelmt['Valeur_condition_vente']) )
					{
						$oForm->ajouterErreur(condition_vente_personne_jeune);
						$gbFormValid = false;
					}
					
					if( ($aelmt['Code_condition_vente']=="AGMAA") && ($nAge > $aelmt['Valeur_condition_vente']) )
					{
						$oForm->ajouterErreur(condition_vente_personne_agee);
						$gbFormValid = false;
					}
				}
				
			}
		}
	}
	
	//CONTROLE SUR LE TYPE DE ROLE DE LA PERSONNE À EDITER
	if($gbFormValid)
	{
		if($_POST['FS_Type_role']=="S")
		{
			$oForm->ajouterErreur(contrat_plus_souscripteur);
			$gbFormValid = false;
		}
		
		$arole = $oContrat->contrat_getRoledeTypeBFromIdContrat($nIdcontrat);
		
		if(($_POST['FS_Type_role']== "B") && (!empty($arole)))
		{
			$oForm->ajouterErreur(contrat_plus_beneficiaire);
			$gbFormValid = false;
		}
		
		//$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
		$acdtvBen = $oCondtVente->conditionVente_clauseBeneProdOffreContrat($nIdcontrat,$dDateEffet);
		
		if(($acdtvBen == null) && ($_POST['FS_Type_role']== "B"))
		{
			$oForm->ajouterErreur(condition_vente_clause_beneficiare);
			$gbFormValid = false;
		}
	}
	
	
	//MODIFICATION DE LA PERSONNE
	if(isset($_POST['valider']) && $gbFormValid)
	{
		
		//$tab = explode('-', $_POST['ODN_Date_naissance']);
		//$datenais = $tab[2]."-".$tab[1]."-".$tab[0];
		//echo $datenais;

		$oTypepers->_TYPE_PERSONNE 				= $sTypeValue;
		$oTypepers->_ETAT_PERSONNE 				= $sEtat;
		//$oTypepers->_NOM_PERSONNE 			= $_POST['ONO_Nom_personne'];
		//$oTypepers->_PRENOM_PERSONNE 			= $_POST['OPN_Prenom_personne'];
		$oTypepers->_CIVILITE_PERSONNE 			= $_POST['FS_Civilite'];
		$oTypepers->_NOM_JEUNE_FILLE_PERSONNE 	= $_POST['FJF_Nom_jeune_fille'];
		$oTypepers->_RAISON_SOCIALE 			= $_POST['ORS_Raison_sociale'];
		$oTypepers->_DATE_NAISSANCE_PERSONNE 	= $_POST['ODN_Date_naissance'];
		$oTypepers->_LIEU_NAISSANCE_PERSONNE 	= $_POST['OLN_lieu_naissance'];
		$oTypepers->_SEXE_PERSONNE 				= $_POST['FS_Sexe'];
		$oTypepers->_PROFESSION_PERSONNE 		= $_POST['FPR_Profession'];
		$oTypepers->_EMPLOYEUR_PERSONNE 		= $_POST['FLN_Employeur'];
		
		$oConnexionBis = new CDatabaseMysql();
		$oConnexionBis->beginTransaction();
		$nUpdate = $oTypepers->personne_update();
		
		if($nUpdate==1)
		{
			$oForm->ajouterErreur(personne_modifiee);
			$_SESSION['personneCreerRat'] = 1;
			//13 – créer le rôle avec un état à A (actif), en cas d’erreur technique, afficher le message d’erreur « Problème création rôle, contactez la DSI 
			if(!isset($_GET['idrole']) && !isset($_SESSION['idRolePers']) )
			{
				$idRole = $oTypepers->insertRole($_POST['FS_Type_role'], 'A', $_POST['FS_Type_dassure'], $_SESSION['IdPers'], $nIdcontrat );
				if($idRole)
				{
					//14-créer pour l’assuré autant de garanties souscrites avec un état à A (actif) que de garanties obligatoires pour le produit sélectionné
					$oGarSousc = new dataObject_garantieSouscrite();
					//RÉCUPÉRATION DE L'IDENTIFIANT DE L'OFFRE DU PRODUIT ET DE LA FORMULE
					$asFPO = $oContrat->getFormuleProduitOffreDuContrat($nIdcontrat);
					$idProduit = $asFPO[0]['Identifiant_produit'];
					$idFormule = $asFPO[0]['Identifiant_formule'];
	 
					$bUpdGar = $oGarSousc->insertGarantieSouscrite_SelectGarantie($idProduit, $nIdcontrat, $_SESSION['IdPers'], $idFormule);
					if($bUpdGar===false) 
					{
						$oConnexionBis->rollback();
						$oForm->ajouterErreur(garantiesosusrite_creer_probleme);
					}
					else
					{
						//15– si la personne créée joue un rôle de bénéficiaire, modifier le contrat en alimentant la clause bénéficiaire avec le code de la condition de vente de type « clause bénéficiaire »
						if($_POST['FS_Type_role'] == 'B') // modifier le contrat en alimentant la clause bénéficiaire
						{
							
								$oContrat = new dataObject_contrat($nIdcontrat);
								$oContrat->_CLAUSE_BENEFICIAIRE = $acdtvBen[0]['Code_condition_vente'];
								if($oContrat->contrat_update()===false)
								{
									$oConnexionBis->rollback();
									$oForm->ajouterErreur(contrat_modification_clause_probleme);
								}
								else 
								{
									$_SESSION['idRolePers'] = $idRole;
									$oConnexionBis->commit();
									
								}
						}
						else
						{
							$_SESSION['idRolePers'] = $idRole;
							$oConnexionBis->commit();
						}
					}
							
				}
				else
				{
					$oConnexionBis->rollback();
					$oForm->ajouterErreur(contrat_creer_role_probleme);
				}	
			}
		}
	}
	
	if(isset($_GET['modc_adresse']) || isset($_GET['modc_communication']) || isset($_GET['modc_garantie']) || isset($_GET['modc_justificatif']) || isset($_GET['modc_refexterne']))
	{
		$oForm->ajouterErreur(personne_modifiee);
		if(isset($_GET['modc_garantie']) || isset($_GET['modc_justificatif']) )
			$_SESSION['personneCreerRat'] = 1;
	}

	
	$oElementDico = new dataObject_elementdico();
	
	//--- CONSTRUCTION LISTE TYPES D'ASSURÉ M0003
	$asListTypeAssure = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::TYPE_ASSURE); 
	$aOptions4  = array();
	$aOptions4[0] = array('option_value_4'=>-1,'option_name_4'=>" ");
	foreach ($asListTypeAssure as $ikey => $aelmt)
	{
		$aOpt = array('option_value_4'=>$aelmt['Code_element'],'option_name_4'=>htmlentities($aelmt['Nom_element'], ENT_COMPAT, 'utf-8'));
		if($aelmt['Code_element']==$sTypeAssure)$aOpt = array_merge($aOpt, array("selected_4"=> true));
		$aOptions4[$ikey+1] = $aOpt;
	}
	
	
	//--- CONSTRUCTION DE LA LISTE TYPES DE ROLE T0006
	$asListTypeRole = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_ROLE); 
	$aOptions5  = array();
	foreach ($asListTypeRole as $ikey => $aelmt)
	{
		$aOpt = array('option_value_5'=>$aelmt['Code_element'],'option_name_5'=>$aelmt['Nom_element']);
		if($aelmt['Code_element']==$sTypeRole)$aOpt = array_merge($aOpt, array("selected_5"=> true));
		$aOptions5[$ikey] = $aOpt;
	}

	
	//--- CONSTRUCTION DE LA LISTE TYPE DE PERSONNE T0005
	$asListTypepers = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_PERSONNE);
	$aOptions1 = array();
	foreach ($asListTypepers as $iKey => $aelmt)
	{
		$aOpt = array('option_value_1'=>$aelmt['Code_element'],'option_name_1'=>$aelmt['Nom_element']);		         
		if($aelmt['Code_element']==$sTypeValue)$aOpt = array_merge($aOpt, array("selected_1"=> true));
		$aOptions1[$iKey] = $aOpt;
	}
	//--- FIN CONSTRUCTION LISTE TYPE DE PERSONNE
	
	switch($sTypeValue)
	{
		
		case "M": // CONTSTRUCTUTION FORMULAIRE PERSONNE MORALE
			
			$asInputs = array(array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure'),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role'),
							  array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne'),
							  array('label_input'=>'RAISON SOCIALE','input_name'=>'ORS_Raison_sociale', 'input_value'=> htmlentities($oTypepers->_RAISON_SOCIALE, ENT_COMPAT, 'utf-8'), 'size'=>'50', 'class'=>'resize_2', 'maxlength'=>30)
		   					  );
			break;
			
		   	
		case "P": // CONSTRUCTION DU FORMULAIRE PERSONNE PHYSIQUE
			$asInputs = array(array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure'),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role'),
							  array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne'),
							  array('label_input'=>'NOM','input_name'=>'ONO_Nom_personne', 'input_value'=> $oTypepers->_NOM_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30, 'read_only'=>'disabled="disabled"'),
							  array('label_input'=>'PRENOM','input_name'=>'OPN_Prenom_personne', 'input_value'=> $oTypepers->_PRENOM_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30, 'read_only'=>'disabled="disabled"'),
							  array('label_select_2'=>'CIVILITE','select_name_2'=>'FS_Civilite'),
							  array('label_input'=>'NOM JEUNE FILLE','input_name'=>'FJF_Nom_jeune_fille', 'input_value'=> $oTypepers->_NOM_JEUNE_FILLE_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'=>'DATE DE NAISSANCE','input_name'=>'ODN_Date_naissance', 'input_value'=> $oTypepers->_DATE_NAISSANCE_PERSONNE, 'size'=>'50', 'class'=>'resize_1', 'maxlength'=>10),
							  array('label_input'=>'LIEU DE NAISSANCE','input_name'=>'OLN_lieu_naissance', 'input_value'=> $oTypepers->_LIEU_NAISSANCE_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_3'=>'SEXE','select_name_3'=>'FS_Sexe'),
							  array('label_input'=>'PROFESSION','input_name'=>'FPR_Profession', 'input_value'=> $oTypepers->_PROFESSION_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'=>'EMPLOYEUR','input_name'=>'FLN_Employeur', 'input_value'=> $oTypepers->_EMPLOYEUR_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30)
		   					  );

			//--- CONSTRUCTION DES LISTES CYVILITE & SEXE
			$asListCivilite = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::CIVILITE);	
			$aOptions2 = array();
			foreach ($asListCivilite as $iKey => $aelmt)
			{
				$aOpt = array('option_value_2'=>$aelmt['Code_element'],'option_name_2'=> htmlentities($aelmt['Nom_element'], ENT_COMPAT, 'utf-8'));		         
				if($aelmt['Code_element']==$sCivilite)$aOpt = array_merge($aOpt, array("selected_2"=> true));
				$aOptions2[$iKey] = $aOpt;
			}
			
			
			$asListSexe = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::SEXE);
			$aOptions3 = array();
			foreach ($asListSexe as $iKey => $aelmt)
			{
				$aOpt = array('option_value_3'=>$aelmt['Code_element'],'option_name_3'=> htmlentities($aelmt['Nom_element'], ENT_COMPAT, 'utf-8'));		         
				if($aelmt['Code_element']==$sSexe)$aOpt = array_merge($aOpt, array("selected_3"=> true));
				$aOptions3[$iKey] = $aOpt;
			}
			//--- FIN CONSTRUCTION LISTES CYVILITE & SEXE	
			
			
			$oPageEdit->iterateReplace('options_2', $aOptions2);
			$oPageEdit->iterateReplace('options_3', $aOptions3);
			break;		
	}
	$oPageEdit->iterateReplace('options_4', $aOptions4);
	$oPageEdit->iterateReplace('options_5', $aOptions5);
	$oPageEdit->iterateReplace('options_1', $aOptions1);
	$oPageEdit->iterateReplace('champ_input', $asInputs);
	
	//GESTION DES BOUTONS
	if(isset($_SESSION['IdPers']))
	{
		$oPageEdit->replace('url_Adresse',"adressemc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		$oPageEdit->replace('url_Communication',"communicationmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		$oPageEdit->replace('url_refenrences',"refexternemc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		
		//if(($nIdProdGarn > 0) && ($sEtat =="A"))
		if(isset($_SESSION['gar_optionnel']) && ($_SESSION['gar_optionnel'] == true) && ($_SESSION['TR'] == 'A') )
		{
			$oPageEdit->replace('url_Garanties',"garantieoptionnellesmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		}
		else
		{
			$oPageEdit->replace('url_Garanties',"#");	
		}
		
		//if($ncdtv > 0)
		if(isset($_SESSION['justificatif']) && ($_SESSION['justificatif'] == true))
		{
			$oPageEdit->replace('url_jutificatifs',"justificatifsmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		}else{
			$oPageEdit->replace('url_jutificatifs',"#");
		}
		
	}
	else
	{
		$oPageEdit->replace('url_Adresse',"#");	
		$oPageEdit->replace('url_Communication',"#");
		$oPageEdit->replace('url_refenrences',"#");
	}
	
	$oPageEdit->replace('url_Annuler',"index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac']);
	$oPageEdit->replace('url_Retour',"index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac']);
	
	//affichage message d'erreur
	$oPageEdit->iterateReplace('messages', $oForm->getValidMessage());
	
	/***** affichage de la page ainsi parametrée *****/
	echo $oPageEdit->toString();
	
	include_once '../../include/inc_pied_page.php';
?>